{
}
+int _shadow_mode_enabled(struct domain *d)
+{
+ return shadow_mode_enabled(d);
+}
+
static void alloc_monitor_pagetable(struct exec_domain *ed)
{
unsigned long mmfn;
// thus potentially out-of-sync) guest page.
//
if ( VM_ASSIST(d, VMASST_TYPE_writable_pagetables) )
- {
- int cpu = current->processor;
-
- for ( i = 0; i < ARRAY_SIZE(ptwr_info->ptinfo); i++)
- {
- if ( ptwr_info[cpu].ptinfo[i].l1va &&
- ((v2m(ptwr_info[cpu].ptinfo[i].pl1e) >> PAGE_SHIFT) == gmfn) )
- {
- unsigned long old = gmfn;
- gmfn = (v2m(ptwr_info[cpu].ptinfo[i].page) >> PAGE_SHIFT);
- printk("hit1 ptwr_info[%d].ptinfo[%d].l1va, mfn=0x%08x, snapshot=0x%08x\n",
- cpu, i, old, gmfn);
- }
- }
- }
+ BUG();
if ( page_out_of_sync(pfn_to_page(gmfn)) )
{
#include <xen/config.h>
#include <xen/list.h>
-#include <xen/sched.h>
#include <asm/io.h>
+#include <asm/uaccess.h>
/*
* Per-page-frame information.
extern int shadow_remove_all_write_access(
struct domain *d, unsigned long gpfn, unsigned long gmfn);
extern u32 shadow_remove_all_access( struct domain *d, unsigned long gmfn);
+extern int _shadow_mode_enabled(struct domain *d);
static inline void put_page(struct pfn_info *page)
{
unlikely((nx & PGC_count_mask) == 0) || /* Count overflow? */
unlikely(d != _domain) ) /* Wrong owner? */
{
- if ( !domain->arch.shadow_mode )
- DPRINTK("Error pfn %p: rd=%p(%d), od=%p(%d), caf=%08x, "
- "taf=%08x\n",
- page_to_pfn(page), domain, (domain ? domain->id : -1),
- page_get_owner(page),
- (page_get_owner(page) ? page_get_owner(page)->id : -1),
+ if ( !_shadow_mode_enabled(domain) )
+ DPRINTK("Error pfn %p: rd=%p, od=%p, caf=%08x, taf=%08x\n",
+ page_to_pfn(page), domain, unpickle_domptr(d),
x, page->u.inuse.type_info);
return 0;
}